package day07;

//public class CodeDemo {
//    private  int id=10;
//    private  static  int sid=100;
//    public CodeDemo(){
//        System.out.println("构造块");
//        System.out.println("构造块——id"+id);
//        System.out.println("构造块——sid"+sid);
//    }
//    {
//        System.out.println("普通代码块");
//        System.out.println("普通代码块-id"+id);
//        System.out.println("普通代码块——sid"+sid);
//    }
//    static {
//        System.out.println("静态代码块");
//        System.out.println("静态代码块——sid"+sid);
//    }
//
//}
public class CodeDemo {
    //非静态属性
    private int id = 10;

    //静态属性
    private static int sid = 100;

    //构造块 - 只要new对象的时候
    public CodeDemo() {
        System.out.println("构造块!");
        System.out.println("构造块_id:" + id);//ok
        System.out.println("构造块_sid:" + sid);//ok
    }

    //普通代码块 - 每次创建对象的时候会优先调用普通代码块
    //普通代码块的执行时机高于构造块
    //但是实际开发中,我们不使用普通代码块,一般会将普通代码块中的
    //代码移植到构造块中
    {
        System.out.println("普通代码块!");
        System.out.println("普通代码块_id:" + id);//ok
        System.out.println("普通代码块_sid:" + sid);//ok
    }

    //静态代码块 - JVM加载类进内存的时候 - 会优先给静态代码块分配空间
    //和初始化 - 并且初始化的时机仅仅只有一次
    static {
        System.out.println("静态代码块!");
        System.out.println("静态代码块_sid:" + sid);//ok
        //不能直接使用非静态属性.
    }
}